home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB sort ()
- DEFINT A-Z
-
- CONST ITERATIONS = 1000
- CONST NITEMS = 50
- DIM SHARED xlist(NITEMS), slist(NITEMS)
-
- DATA 9, 34, 14, 18, 33, 46, 11, 13, 7, 26, 22, 10, 36, 40, 2, 28, 32, 1
- DATA 23, 31, 43, 5, 24, 42, 45, 50, 16, 3, 47, 39, 21, 49, 41, 6, 19, 30
- DATA 20, 35, 44, 38, 25, 15, 27, 17, 8, 4, 29, 37, 48, 12
-
- FOR i = 1 TO NITEMS
- READ xlist(i)
- NEXT i
-
- x! = TIMER
-
- FOR t! = 1 TO ITERATIONS
- REM preserve the original array
- FOR x = 1 TO NITEMS
- slist(x) = xlist(x)
- NEXT x
- sort
- NEXT t!
-
- PRINT ITERATIONS;" ITERATIONS IN ";TIMER - x!; " SECONDS"
-
- FOR i = 1 TO NITEMS
- PRINT slist(i),
- NEXT i
-
- SUB sort
- REM put slist into ascending order
- REM using an insertion sort
-
- gap = INT(NITEMS / 4) + 1
- DO
- FOR i = gap + 1 TO NITEMS
- tempi = slist(i)
- j = i - gap
- DO
- tempj = slist(j)
- IF tempi >= tempj THEN
- j = j + gap
- EXIT DO
- END IF
- slist(j + gap) = tempj
- IF j <= gap THEN
- EXIT DO
- END IF
- j = j - gap
- LOOP
- slist(j) = tempi
- NEXT i
- IF gap = 1 THEN
- EXIT SUB
- ELSE
- gap = INT(gap / 4) + 1
- END IF
- LOOP
- END SUB
-
-